Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
Rails 開發,每日一套件第6天,跟著我一起走完這段旅程,您也能建立出自己的常用套件庫。
讓我們循序漸進,輕鬆認識 Rails 開發好用的 30 個套件吧!
今天要介紹的必裝套件,dotenv-rails。是一個一直覺得好像沒什麼好說的,但真的講起來,其實要先解釋一些背景的小套件。在介紹這個套件之前,應該要先講什麼是.env,然後也需要有對於軟體發開環境的知識理解才行。
.env 是一個專門存放環境變數(Environment Variables)的檔案,通常會將一些重要的資料,如金鑰、帳號、密碼、系統或程式設定等,再配合把 .env 放入 gitignore 內,可以避免將重要資料加入版控內(非常重要,務必要放入gitignore)。實務上也會利用環境變數來區分 development 環境 及 production 環境。
而這個 .env 並不是 rails 專用的檔案,在多種程式語言、或軟體中都很常見。而 dotenv-rails 則是專為了 rails 打造的套件,其他還有例如像 dotenv、python-dotenv 等,分別在 node.js 或 python 中使用。
首先,一樣的先 bundle add 一下。
bundle add dotenv-rails
並且確認這個 gem 在 groups: [:development, :test]
中。
接著在 config/application.rb
中,Bundler.require(*Rails.groups)
底下寫入。
if ['development', 'test'].include? ENV['RAILS_ENV']
Dotenv::Railtie.load
end
接著就可以開始使用了~
好比說你的資料庫設定 database.yml 中,db 的 username、password 等等,任何你覺得重要的資訊,都可以用一個 env 的方式來儲存,並避免進入版控!並避免進入版控!並避免進入版控! (很重要講三次)
範例如下:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: localhost
username: <%= ENV['DB_USERNAME'] %>
password: <%= ENV['DB_PASSWORD'] %>
於是你就可以在專案資料夾中,創建一個.env檔,並且在檔案中寫入:
DB_USERNAME: username 真正的使用者帳戶
DB_PASSWORD: password 真正的使用者密碼
走到這裡,大致就完成了。
另外提供一些小撇步,在團隊工作中,為了要你的同伴知道有什麼樣的金鑰,也可以創建一個叫做 .env.sample 的檔案。這裡面不會寫入真的金鑰,而只是提醒同伴甚至自己,目前專案中有什麼金鑰。格式跟.env 大同小異,只是後方不會寫入真的資訊。
另外,如果在開發中,你想要查詢某個金鑰是什麼。又懶得切回.env 看,可以透過 rails console 來查詢:
rails c
> ENV["DB_USERNAME"]
> username
>ENV["DB_PASSWORD"]
> password
>
以上。
總之,dotenv 在任何專案中,絕對都是必裝套件之一,別忘了加入你的收藏吧!
我們明天再見!